第12回elasticsearch勉強会に参加してきました #elasticsearchjp
はじめに
藤本です。
弊社ブログがre:Invent 2015で賑わう中、私は負けじと(?)Elasticsearch勉強会に参加してきました。 最後に大谷さんよりみなさん是非ブログを書いてください、とのことだったのでサックリサマリです。 と言っても、メモれなかったところ多々有り。。
Elasticaserch 2.0の紹介
スピーカー
- Elastic社 大谷さん
- Technical Adovocateやってます
- Elasticsearchについてツイートすればキャッチアップします
Elastic社のご紹介
- OSS: Elasticsearch, Logstash, Kibana, Beats
- Commercial plugins:
- Marvel : モニタリング
- Shield : セキュリティ
- Watch : 監視、アラート
- Hosted Elasticsearch:
- Found : AWS上で動作するElasticsearch as a Service。Amazon ESとは別
※ 弊社ブログでもいくつかエントリしているので是非読んでみてください。 https://dev.classmethod.jp/referencecat/aws-full-text-search/
Elasticsearch 2.0
- 今朝、RC1がリリースされました!!
- Lucene 4系 -> 5系
- 2500以上のPull Requestのうち850のRequestがマージされた
- 496人がコミッターとして参加
変更内容
- 既にドキュメントを公開済み https://www.elastic.co/guide/en/elasticsearch/reference/2.0/index.html
- 1.x系との違いを中心にまとめられている
特徴
- 簡易化
- 耐障害性
- 機能拡張
- ・・・もう一つなんだっけ。。
廃止された機能
- River : データを取り込む機能。他のプロセスと連携して負荷が高くなる傾向にある。LogstashやFluentdを活用して置き換えよう。
- Facet : 検索結果のグルーピングする機能。Aggregationsに置き換えられた。
- _shutdown API : APIによりプロセスを停止する機能。
- Thrift / Memcached protocol : ThriftやmemcachedのプロトコルでElasticsearchを利用する機能。人気ないので廃止。
Pluginになった機能
- Delete by query
- murmur3
- size
- Multicast discovery
- MulticastによるCluster機能はPlugin化。勝手にCluster化されるのが不便な場合もあり標準実装からPlugin化。
標準搭載されたPlugin
- 主要なPluginがElasticsearch自体に同梱されているようになった
- icuやkuromoji等
Mappingの変更
https://www.elastic.co/guide/en/elasticsearch/reference/2.0/_mapping_changes.html
1.x系から2.0に移行される方は要注意。
- Conflictするフィールド定義不可
- mappingで同じプロパティ名を利用することができない。
- Fieldのshort nameのConflict不可
- mappingの入れ子で同じプロパティ名を利用することができない。
- フィールド名にドットを使用不可
- タイプ名が取った
- 他、多々あり。
QueryDSLの変更
https://www.elastic.co/guide/en/elasticsearch/reference/2.0/_query_dsl_changes.html
- QueryとFilterの統合
- 2.0以前はfiltered DSLにquery、filterを指定していた記述が、2.0以降はflterのみで指定可能
セキュリティについて
- Multicast -> Unicast
- https://www.elastic.co/guide/en/elasticsearch/reference/2.0/_network_changes.html
- SecurityManager(Java)の実装
- 操作毎にfsyncが走るようになり、
- 複数ディスク搭載している場合、Shard単位でディスクにデータが格納される
- それによりディスク故障時のデータ破損を防止
機能拡張
- Pipeline Aggregation
- https://www.elastic.co/guide/en/elasticsearch/reference/2.0/_aggregation_changes.html
- Index Compression
- より賢くなって10%-30%小さくなり、パフォーマンス向上
- 時系列インデックスに最適化
1.x系から2.0への移行
- ローリングアップグレード不可。必ずクラスタごと停止する必要あり
- ダウングレード不可なのでバックアップは必要
- Migration Check Pluginあり
- PluginをElasticsearchにインストールして、WEBベースの外部チェックツールを実行すると問題点が抽出される
- 旧バージョンを利用していて、Lucene3ベースのIndexがあるとダメ -> Upgrade APIを利用するとLucene3ベースのIndexがLucene4ベースに書き換えられる。
宣伝
- 12/16(水) elastic on tourが東京で開催
- 11/17で登録締め切りなのでご注意を。
Elasticsearchを使った位置情報検索について
スピーカー
- クックパッド株式会社 内藤さん
- Holidayというサービス開発を担当
Horidayとは?
- ある場所の過ごし方プランの投稿サイト
どんなとこで使っているの?
- 位置情報からの検索、それに加えたキーワードによる条件検索
位置情報検索方法
- Elasticsearchに備わったフィルター、アルゴリズムを活用して検索可能
- geo_distance
- 中心点となる座標情報から指定した距離にマッチする情報を取得
- アルゴリズム(arc, plane, sloppy_arc)によって速度を優先するか、正確さを優先するか指定可能
- geo_bound_box
- 短形範囲検索
- geo_distance_range
- geo_distanceの範囲指定。2Km〜5Kmと言ったドーナツ型検索
- geo_polygon
- 多角形検索?
- sortオプション
- 検索結果を距離順に並べることが可能
より柔軟な位置情報検索
- function_score_query : 複数条件による検索が可能
- gauss : offset/scaleによってより柔軟、人間らしい検索が可能
デモ
- 京都の観光名所の座標データが登録されたElasticsearchに、中心座標、検索キーワードを与えると、ただ距離が近いだけでなく、検索キーワードのスコアも含めて順位付けされ、結果を返す
Elasticsearch at Makuake
スピーカー
- 株式会社サイバーエージェント・クラウドファンディング 吉田さん
- Makuakeのサービス開発担当
- elasticsearchのハンズオンをgithubに公開 https://github.com/Kakakakakku/elasticsearch-hands-on
Makuakeとは?
- 国内最大級のクラウドファンディングサービス
どんなとこで使ってるの?
- エラーログ管理
- サポーター分析
- 営業成績管理
- プロジェクト分析
活用事例1:エラーログ管理
- エンジニア向け
- エラーログをElasticsearchで管理し、システムのモニタリングの活用
活用事例2:サポーター分析
- プロダクト向け
- サポーターがどのような行動のもと、利用しているかの分析に活用
活用事例3:営業成績管理
- キュレーター(営業)向け
- 営業向けにKibanaを提供
- 様々なデータを基にKPIの可視化
- 時々、負荷高めなQueryが発生し、高負荷になることも。。
Makuake Analytics
- Makuakeの実行者向けに独自のWEB GUIを開発
- UIをJavascript、BackendはPHPでElasticsearchにQuery
- スッキリしたシンプルなUI
まとめ
今回、elasticsearch勉強会に初参加させていただきました。 私自身、elasticsearchはチュートリアルを触ったことがあるだけで、全文検索のイメージしか持っておらず、使いドコロが見えないところがありましたが、生の現場の声、実際の活用事例が聞けて勉強になりました。来月前半にも開催されるそうですので、ぜひまた参加させていただこうと思います。
ちなみにkibana4.2で黒いGUIが帰ってくるそうです。